package com.ss.jdk.stream;

import com.ss.jdk.lambda.doman.Person;
import com.ss.jdk.lambda.doman.Person2;
import com.ss.jdk.lambda.doman.Person3;

import java.util.stream.Stream;

/**
 * @Auther: ljy.s
 * @Date: 2022/9/10 - 09 - 10 - 19:55
 */
public class StreamTest14Distinct {
    public static void main(String[] args) {
        Stream.of("1", "3", "4", "2", "7", "6", "1", "7", "5", "3")
                //.map(msg -> Integer.parseInt(msg))
                .map(Integer::parseInt)
                //.sorted() // 根据数据的自然顺序排序
                .sorted((o1, o2) -> o2 - o1) // 根据比较器指定排序规则
                .distinct() // 去掉重复的记录
                .forEach(System.out::print);

        System.out.println("------------------------");

        Stream.of(
                new Person3("张三",18),
                new Person3("李四",32),
                new Person3("张三",18)
        ).distinct()
                .forEach(System.out::println);
        // Stream流中的distinct方法对于基本数据类型是可以直接去重的，
        // 但是对于自定义类型，我们是需要重写hashCode和equals方法来移除重复元素。
    }
}
